<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../js/vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>总结</h1>
        <p>
            计算属性：<br>
            1.定义:要用的属性不存在，要通过已有属性计算得来. <br>
            2.原理:底层借助了objcet.defineproperties方法提供的getter和setter。<br>
            3.找到雨数什么时候执行吗？<br>
                (1)。初次读取时会执行一次.<br>
                (2)。当依赖的数据发生改变时会被再次调用.<br>
            4.优势:与方法实现相比，内部有缓存机制(复用)，效率更高，调试方便.<br>
            5.备注：<br>
                1.计算属性最终会出现在VM上，直接读取使用即可.<br>
                2.如果计算属性要被修改，那必须写集函数大响应修改，且集中要引起计算时依赖的数据发生变化
        </p>

        <hr>
        <h1>姓名案例-计算属性实现</h1>
        <p>{{msg}}</p>
        姓：<input type="text" v-model="firstName" > <br>
        名：<input type="text" v-model="lastName" > <br>
        姓名：<span>{{fullName}}</span>


    </div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示
    var app = new Vue({
        el: '#app',
        data: {
            msg: 'Hello Vue!',
            firstName: 'John',
            lastName: 'Doe'
        },
        computed:{
            //计算属性 的完整写法
            fullName:{
                get(){
                    return this.firstName + '-' + this.lastName;
                },
                set(value){
                    const arr=value.split("-");
                    this.firstName=arr[0];
                    this.lastName=arr[1];
                }
            }
        }
    })
</script>
</html>